(function($) {

	function DataGrid() {
	}

	var openWindow = function(config) {
		mini.open({
			url : basePath + config.url,
			title : config.title,
			width : config.width,
			height : config.height,
			onload : function() {
				if (config.data.action == "update") {
					var iframe = this.getIFrameEl();
					iframe.contentWindow.$.form.showUpdate(config);
				}
			},
			ondestroy : function(action) {
				if (action&&action.indexOf("_") > 0) {
					var actions = action.split("_");
					var actionName = actions[0];
					var msg = actions[1];
					if (actionName == "save" && msg != "null" && msg != "") {
						//mini.alert(msg);
						tips.show(msg, '', 5000, '#DFF0D8', 150);
					}
				}
				$.grid.datagrid.reload();
			}
		});
	};

	$.extend(DataGrid.prototype, {
		init : function(options) {
			this.datagrid = null;
			var defaults = {
				id : "",
				sortFld : "",
				sortOrder : "",
				idfld : "id"
			};
			var opts = $.extend(defaults, options);
			mini.parse();
			this.datagrid = mini.get(opts.id);
			this.datagrid.load(); // 加载数据
			if (opts.sortFld && opts.sortOrder) {// 排序
				this.datagrid.sortBy(opts.sortFld, opts.sortOrder);
			}
		},
		onMarriedRenderer : function(e) {
			if (e.value == 1) {
				return "是";
			}
			return "否";
		},
		onGenderRenderer : function(e) {
			if (e.value == 1) {
				return "男";
			}
			return "女";
		},
		onHtmlRenderer : function(e) {
			return "<a href='#'>" + e.value + "</a>";
		},

		add : function(options) {
			var data = {
				action : "new"
			};
			var defaults = {
				url : "",
				title : "添加",
				width : 600,
				height : 360
			};
			var opts = $.extend(defaults, options);
			opts.data = data;
			openWindow(opts);
		},
		edit : function(options) {
			var defaults = {
				url : "",
				dataUrl : "",
				fieldId : "id", // 获取选中行的主键值
				formId : "", // 表单Id属性值
				title : "修改",
				width : 600,
				height : 360
			};
			var opts = $.extend(defaults, options);
			// 获取选中的行
			var row = this.datagrid.getSelected();
			if (row) {
				var data = {
					action : "update",
					row : row
				};
				opts.data = data;
				openWindow(opts);
			} else {
				mini.alert("请选择要修改的数据！");
			}
		},
		remove : function(options) {
			var defaults = {
				url : "",
				paramName : "key",
				fldId : "id"
			};
			var opts = $.extend(defaults, options);
			var dg = this.datagrid;
			// 选中多行记录
			var rows = dg.getSelecteds();
			if (rows.length > 0) {
				var param = "";
				for (var i = 0; i < rows.length; i++) {
					if (i != 0) {
						param += "&";
					}
					param += opts.paramName + "=" + rows[i][opts.fldId];
				}

				mini.confirm("是否删除选择的记录?", "温馨提示", function(e) {
					if (e == "ok") {
						dg.loading("操作中，请稍后......");
						$.ajax({
							url : basePath + opts.url,
							type : "post",
							data : param,
							success : function(text) {
								dg.reload();
								if (opts.showMsg && text.msg != null
										&& text.msg != "") {
										//mini.alert(text.msg);
										tips.show(text.msg, '', 5000, '#DFF0D8', 150);
								}
							},
							statusCode : {
								500 : function() {
									alert("删除失败！");
								}
							}
						});
					}
				});
			} else {
				mini.alert("请选择要删除的数据！");
			}
		}
	});

	$.fn.grid = function(options) {
		return this.each(function() {
			$.grid.init($(this), options);
		});
	};

	$.grid = new DataGrid();
})(jQuery);